Impedance mismatch between transmission lines and driver/receiver impedances can cause signal reflections and may degrade the signal. One solution to this problem has been a programmable impedance matching circuit on the transmitter and receiver. This input impedance matching circuit can be on-board or on-chip. On-board circuits take up a lot of board space. One embodiment of this invention utilizes an on-chip impedance matching circuit. A calibration resistor is used to define the pull-up and pull-down arrays impedances. The pull-up array is placed in series with the calibration impedance and a supply voltage is applied across the pull-up array and the calibration impedance. The voltage at the node between the pull-up array and the calibration impedance is compared to a reference voltage in a comparator. The impedance of the pull-up array is adjusted until the voltage at the node is equal to the reference voltage. Usually, the reference voltage is one half the supply voltage. As a result, the impedance of the pull-up array is equal to the calibration impedance. A second comparator is used to set the impedance of the pull-down array either by placing another pull-up array and pull-down array in series or another reference impedance in series with the pull-down array. Unfortunately, in these cases the offset of the comparators can add and result in two comparator offsets in the calibration impedance of the pull-down array. Also, it can introduce two comparator offsets between the impedance of the pull-up array and the pull-down array. In a single ended system, when data is transmitted between a transmitter and a receiver the data common mode depends on the value of the pull-up and pull-down impedance on the transmitter and the receiver. Also the data is sensed by comparing it with an ideal common mode [usually a reference voltage] in the receiver. Any mismatch between the data common mode and the ideal common mode causes clock-to-data skew. This skew may be significant in high speed signaling systems. The skew may occur because a negative going data pulse is clocked by a positive going clock pulse. One signal is controlled by pull-up array's impedance while the other signal is controlled by the pull-down array's impedance.
Thus there exists a need for an impedance buffer that improves accuracy and reduces the difference in the impedance between the pull-up array and the pull-down array.